/*
 * @Author: HeAo
 * @Date: 2022-08-08 14:57:30
 * @LastEditTime: 2022-08-09 19:56:46
 * @LastEditors: HeAo
 * @Description: hyj
 * @FilePath: \JavaScripe\第二天\03-隐式转换.js
 * 别乱动！
 */
// 一、加法
// // 1、全是字符串
// var a = 'hello' + 'js'
// // 2、全是number
// var b = 1 + 2 + 3
// // 3、含有number+string 
// //执行加法（1+2+3=6） 执行toString() (6+'123').toString() 
// var c = 1 + 2 + 3 + '123'
// console.log(a, b, c);
// // 打印显示6123
// // 上面的这个表达式 为什么结果是6123
// // 1.将前面1+2+3进行加法运算
// // 2.(6+'123').toString()
// // console.log(b);


// 二、- * / ==
// - * /等运算 都是先将操作符左右两边进行隐式转换再进行操作

// 关于==的隐式转换
// console.log('1' == true);


// 三、引用数据类型
// 引用数据类型的隐式转换
// // 1、[]+[]
// console.log([] + []);
// // 1.确定[] PreferredType 为number
// // 2.确定[] 不是一个原始值
// // 3.调用valueOf方法
// console.log([].valueOf(), typeof [].valueOf());
// // 4.调用toString()方法
// console.log([].valueOf().toString(), typeof [].valueOf().toString());
// // 5.最终 [] 隐式转换 => '' 空的字符串

// 2、转换一个{}
// console.log({});
// console.log({}.valueOf().toString(), typeof {}.valueOf().toString());

// 3、{}+{}
// console.log({} + {}, typeof ({} + {}));

// 4、[]+{}
// console.log([] + {}, typeof ([] + {}));

// 5、{}+[]
console.log({} + [], typeof ({} + []));


// 比较运算符
// 1、==
// 2、===